package main

import (
	"iris/routes"
	"os"
	"time"

	"github.com/kataras/iris/v12"
)

// 实例化一个应用服务对象
func newapp() *iris.Application {

	// 实例化一个应用服务对象
	app := iris.New()

	// 注册静态资源
	app.HandleDir("/static", "./static")

	return app
}

// 404处理
func notFoundHandler(ctx iris.Context) {
	ctx.JSON(iris.Map{"code": 404, "msg": "404 Not Found"})
}

// 500处理
func serverErrorHandler(ctx iris.Context) {
	ctx.JSON(iris.Map{"code": 500, "msg": "500 Internal Server Error"})
}

// 应用配置
func configation(app *iris.Application) *os.File {

	app.OnErrorCode(iris.StatusNotFound, notFoundHandler)
	app.OnErrorCode(iris.StatusInternalServerError, serverErrorHandler)

	// 错误级别
	app.Logger().SetLevel("info")

	// 日志文件
	f := newLogFile()

	// 记录日志
	app.Logger().SetOutput(f)

	return f
}

// 今日日志文件名
func todayFilename() string {
	today := time.Now().Format("2006-01-02")
	return today + ".log"
}

// 打开日志文件
func newLogFile() *os.File {
	filename := "./log/" + todayFilename()
	// 打开以当前日期为文件名的文件（不存在则创建文件，存在则追加内容）
	f, _ := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	return f
}

// 入口
func main() {

	app := newapp()

	f := configation(app)
	defer f.Close()

	routes.RoutesInfo(app)

	app.Run(iris.Addr(":3939"))
}
